package org.geom.curve;

import org.geom.Maths;

public class Bernstein {
/*
 * Bernstein polynomials:
 * 
 * B(i, n, u) = n! * u^i * (1-u)^(n-i) / i! * (n-i)!
 * 
 * */
	
	public static float compute(float u, int i, int n) {
		float b = 0;
		 b = bin(n,i) * Maths.pow(1-u,n-i) * Maths.pow(u,(float) i);
		 return b;
	}
	
	private static int bin(int n, int i) {
		// TODO: eh?? cos'è? un fattoriale con la moltiplicazione?
		float j;
		float b = 1;

		for (j = 1; j<=n-i; j++) {
			b *= ((j+i) / j);
		}

		return (int) b;
	}

}
